﻿<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
      对比defineProperty和proxy两者区别?  
    defineProperty(数据劫持)方法会直接在一个对象上定义一个属性,或者修改一个对象的现有属性,并返回此属性.
    Proxy(代理) 对象用于定义基本操作的自定义行为（如属性查找、赋值、枚举、函数调用等）。IE不兼容。
1,proxy使用上比defineProperty方便.
2,proxy代理整个对象,defineProperty只代理对象上的某个属性.
3,如果对象内部要全部递归代理,则proxy可以只在调用时递归,而defineproperty在一开始就全部递归,proxy性能优于defineProperty.
4,对象定义新属性时,proxy可以监听到,defineProperty监听不到.
5,数组新增删除修改时,proxy可以监听到,defineProperty监听不到.
6,proxy不兼容IE.defineProperty不兼容IE8及以下版本.


     -->

<!-- 
箭头函数和普通函数的区别?
1,箭头函数没有prototype(原型),他本身没有this.
2,箭头函数的this指向,在定义的时候外层第一个普通函数的this.
3,箭头函数不能直接修改它的this的指向,但可以修改它要继承的对象的this.
4,箭头函数外层没有普通函数,它的this指向window全局.
5,箭头函数的this指向全局,使用arguments会报为声名的错误.
6,箭头函数的this指向普通函数时,它的arguments继承于该普通函数.
7,使用new调用箭头函数会报错,因为箭头函数没有constructor.
8,箭头函数不支持new.target.
 -->

 <!-- 
改变this指向的方法及区别?
改变this指向的方法bind() call() apply()
1,返回值的区别:
bind返回值是一个函数,而call 和apply 是立即调用.
2,参数使用区别:
bind()有返回值,返回值是调用bind方法的函数本身.
call(对象,参数1,参数2,...)没有返回值,它的第一个参数是this的指向.第一个参数是谁，函数内部的this就指向谁其他参数以散落的形式传递给函数作为实参.
apply(对象,[参数1,参数2,...])没有返回值,它的第一个参数是要this的指向.第一个参数是谁，函数内部的this就指向谁其他参数以数组的形式传递给函数作为实参
  -->

  <!-- 给字符串方法中添加一个mytrim方法，用来完成两边空格的去除 --> 
 String.prototype.mytrim = function() {

            return this.replace(/(^\s*)|(\s*$)/g, "");

        }

        var aaa = '   hello   ';

        console.log(aaa.mytrim());

    </script>

  


</body>
</html>